package main

import (
	"fmt"
	"log"
	"time"
	"weathergolesson/internal/helpers/csvutils"
	"weathergolesson/internal/logger"
	ow "weathergolesson/internal/openweather"
)

func main() {
	service := ow.NewWeatherService("786e5a4feb6f0937caec8dfb0befc30b", "metric", "ru")
	csvVld, err := csvutils.Open("./data/vladikavkaz.csv")
	if err != nil {
		logger.Fatal("Неполучилось открыть файл", "err", err)
	}
	defer csvVld.Close()
	csvBsl, err := csvutils.Open("./data/beslan.csv")
	if err != nil {
		logger.Fatal("Неполучилось открыть файл", "err", err)
	}
	defer csvBsl.Close()

	for {
		respVld, err := service.GetWeatherByCityName("Vladikavkaz")
		if err != nil {
			logger.Error("Не удалось получить данные от OpenWeather", "err", err)
		}

		respBsl, err := service.GetWeatherByCityName("Beslan")
		if err != nil {
			logger.Error("Не удалось получить данные от OpenWeather", "err", err)
		}

		if respVld.Message != "" {
			log.Println(respVld.Message)

		} else {
			err := csvVld.Write([]string{fmt.Sprintf("%v", respVld.Main.Temp), fmt.Sprintf("%v", respVld.Main.FeelsLike), fmt.Sprintf("%v", respVld.Weather[0].Description)})
			if err != nil {
				logger.Error("Не удалось записать в файл", "err", err)
			} else {
				logger.Info("Запись в файл прошла успешно")

			}

		}

		if respBsl.Message != "" {
			log.Println(respBsl.Message)
		} else {
			err = csvBsl.Write([]string{fmt.Sprintf("%v", respBsl.Main.Temp), fmt.Sprintf("%v", respBsl.Main.FeelsLike), fmt.Sprintf("%v", respBsl.Weather[0].Description)})
			if err != nil {
				logger.Error("Не удалось записать в файл", "err", err)
			} else {
				logger.Info("Запись в файл прошла успешно")

			}
		}
		time.Sleep(1 * time.Hour)
	}

}
